The Unified Extensible Firmware Interface (UEFI) is a specification created by a non-profit industry body detailing a programming interface between an Operating System and the included firmware of a computing device such as (but not limited to) a Personal Computer (PC), laptop, mobile or tablet computing device. Firmware is software that has been written onto Read-Only Memory (ROM) modules including but not limited to ROM, PROM, EPROM, EEPROM, and Flash memory. Among other services, the firmware is responsible for operation of the computing device until a boot process can be run which loads an operating system for the computing device into memory. Once loaded, the operating system is in charge of normal operation of the computing device although the provision of certain services after loading of the operating system may require a transition of control from the operating system back to the firmware for security reasons. UEFI specifications describe a set of tools by which a computing device can move in an organized fashion from a power-applied state to a fully operational state. In computer terms, the computing platform is initialized by firmware included within the platform and this firmware provides a range of software services which facilitate the boot of the operating system. The UEFI specification indicates the desired result but deliberately does not specify the internal tactic of implementation. The UEFI firmware specification replaces earlier operating system (OS)/firmware interfaces previously used by the industry and commonly known as legacy BIOS (Basic Input Output System).
Computer systems may contain one or more expansion slots conforming to the Peripheral Component Interconnect (PCI) Express specification. These slots can be used to install optional input-output boards (also referred to as “expansion cards” or “option cards”) which expand the capabilities of the system. These expansion cards may include legacy BIOS components (legacy BIOS components include system BIOS which is delivered with and supports the system platform and legacy Option ROMS which are incorporated into option cards and which support the initialization of the card).
An Option ROM driver (also referred to hereafter as “Option ROM” or “driver”) is binary code to extend the BIOS or UEFI firmware to support hardware. The Option ROM driver may be included on a flash store on the plug-in card when the card is shipped or may be a driver associated with the card that is separately downloaded or otherwise communicated to the computing device. The BIOS (or UEFI Firmware) executes the Option ROM code when a matching plug-in adapter card (or device on the motherboard) is discovered. The Option ROM code is used to communicate with the hardware prior to the loading of the operating system.
Option ROMs were originally created by IBM in the late 1970's to provide code to extend the BIOS functions in the IBM PC to support an Industry Standard Architecture (ISA) plug-in adapter card (an early form of an expansion/option card). IBM published the format and interfaces for the Option ROM code and it was widely adopted for the IBM PC (and other clone machines). In the late 1980's, Intel created the PCI bus and designed plug-in adapter cards that also used Option ROM code. Intel (and the PCI Industry organization) published the format and the interface for the PCI Option ROM code and it too has been widely adopted. In 2005, the UEFI industry organization published the UEFI Option ROM format and interface. Each change to the Option ROM format and interface (ISA→PCI→UEFI) has represented an improvement in configurability, robustness and security for the Option ROM code. The recent UEFI specification update version 2.3.1 introduced a more secure method for authenticating the origin and integrity of the UEFI Option ROM code (“UEFI Signed Option ROMs”). The UEFI specification provides the ability to create UEFI firmware for the system board as well as enabling a UEFI Option ROM driver to be incorporated into the expansion card by the manufacturer. Unfortunately, as the industry transitions, currently manufactured Option Cards frequently include only legacy Option ROMs rather than UEFI format signed Option ROMs.